package com.example.springflowable;

import org.flowable.engine.ProcessEngine;
import org.flowable.engine.ProcessEngineConfiguration;
import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringFlowableApplication {

    public static void main(String[] args) {
       SpringApplication.run(SpringFlowableApplication.class, args);
    }

    /**
     * act_hi_varinst存放所有的历史变量
     *
     * act_hi_taskinst存放所有的用户任务
     *
     * act_hi_procinst存放单个流程实例
     *
     * act_hi_comment存放用户操作的信息,包括审批信息,附言信息等.
     *
     * act_hi_actinst存放所有的节点信息
     */

    /**
     * <process> ：表示一个完整的工作流程。
     *
     * <startEvent> ：工作流中起点位置，也就是图中的绿色按钮。
     *
     * <endEvent> ：工作流中结束位置，也就是图中的红色按钮。
     *
     * <userTask> ：代表一个任务审核节点（组长、经理等角色），
     * 这个节点上有一个 flowable:assignee 属性，这表示这个节点该由谁来处理，将来在 Java 代码中调用的时候，我们需要指定对应的处理人的 ID 或者其他唯一标记。
     *
     * <serviceTask>：这是服务任务，在具体的实现中，这个任务可以做任何事情。
     *
     * <exclusiveGateway> ：逻辑判断节点，相当于流程图中的菱形框。
     *
     * <sequenceFlow> ：链接各个节点的线条，sourceRef 属性表示线的起始节点，targetRef 属性表示线指向的节点，我们图中的线条都属于这种。
     *
     *
     */


    /**
     *    网关设置通过驳回
     *
     *    <exclusiveGateway id="jingli-check" name="经理审核"/>
     *
     *     <sequenceFlow id="sid-2b760790-ce29-44bd-a04b-ab704184d0d6" sourceRef="sid-f1fc8647-521c-40aa-ace3-7d84f5fe005a" targetRef="jingli-check" name="经理审核"/>
     *     <endEvent id="sid-5c3a72d0-f7e6-4dba-87c3-f3b576b696d4"/>
     *
     *     <sequenceFlow id="jingli-check-success" sourceRef="jingli-check" targetRef="sid-5c3a72d0-f7e6-4dba-87c3-f3b576b696d4" name="通过">
     *       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${checkResult=='通过'}]]></conditionExpression>
     *     </sequenceFlow>
     *
     *
     *     <sequenceFlow id="jingli-check-fail" sourceRef="jingli-check" targetRef="sid-c16e8981-35ae-464a-8bb2-e132acd8ddfd" name="驳回">
     *       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${checkResult=='驳回'}]]></conditionExpression>
     *     </sequenceFlow>
     */


    /**
     * 查询已办任务
     *
     * SELECT DISTINCT
     *         RES.ID_ AS id,
     *         RES.NAME_ as name,
     *         DEF.KEY_ AS procDefKey,
     *         DEF.NAME_ AS procDefName,
     *         DEF.VERSION_ AS version,
     *         DEF.DEPLOYMENT_ID_ AS deployment,
     *         RES.START_USER_ID_ as startUserId,
     *         RES.START_TIME_ as startTime,
     *         RES.END_TIME_ as endTime,
     *         RES.DURATION_ as duration,
     *         RES.PROC_INST_ID_ as processInstanceId,
     *         RES.BUSINESS_KEY_ as businessKey,
     *         DEF.ID_ as processDefinitionId
     *         FROM
     *         ACT_HI_PROCINST RES
     *         LEFT OUTER JOIN ACT_RE_PROCDEF DEF ON RES.PROC_DEF_ID_ = DEF.ID_
     *         WHERE
     *         RES.END_TIME_ IS NOT NULL
     *         AND RES.START_USER_ID_ =#{userNameId}
     *         ORDER BY
     *         RES.END_TIME_ DESC
     */
}
